package com.voxel.sense.infomsg.module.home;

import com.amap.api.maps.AMap;
import com.amap.api.maps.model.MarkerOptions;
import com.amap.api.services.geocoder.GeocodeSearch;
import cyy.example.com.facotry.model.api.response.FirmLocationEntity;
import com.voxel.sense.infomsg.module.map.MapContract;

import java.util.ArrayList;
import java.util.List;


/**
 * Created by ChenYiYao on 2018/2/5.
 */

public interface HomeContract {
    interface View<T> extends MapContract.View<Presenter> {

        /**
         * 刷新定位指定的城市，更新up
         *
         * @param str city
         */
        void RefreshPointCity(String str);

        /**
         * 刷新map可视区域的中心点
         *
         * @param latitude
         * @param longititude
         */
        void RefreshMapCamera(double latitude, double longititude);


        /**
         * 初始化地图上的marker标记
         *
         * @param markerOptions
         */
        void initMarker(ArrayList<MarkerOptions> markerOptions);

        /**
         * 初始化地图上的marker标记
         */
        void onShowtMarker(T markerData);

        /**
         * 获取当前的城市
         *
         * @param city 当前城市
         */
        String getCurrentciity(String city);

        /**
         * 设置轮播图数据
         */
        void setBannerDatas(List<String> list);

        void onClickInSuccess();
        void setWarinCount(int count);
        void setWifiWarnCount(String count);
    }

    interface Presenter extends MapContract.Presenter {

        /**
         * 查询指定城市的经纬度等信息
         *
         * @param city    查询的城市名称
         * @param oldCity 查询前，定位的城市名称，用于定位失败做复原等操作
         */
        void SearchCityLocation(String city, String oldCity);

        /**
         * 获取所有的公司位置信息
         */
        List<FirmLocationEntity> getFirmDataList();

        /**
         * 获取地图定位回调
         */
        AMap.OnMyLocationChangeListener getMyLocationChangeListener();

        /**
         * 获取地图逆转编码查询回调
         */
        GeocodeSearch.OnGeocodeSearchListener getGeocodeSearchListener();

        /**
         * 获取轮播图数据
         */
        void loadBannerData();

        /**
         * 改变上传条件
         *
         * @param b true 上传位置  false不上传
         */
        void changeUpCondition(boolean b);

        /**
         * 打卡
         */
        void doClockIn();

        /**
         * 警告数量
         * */
        void getWarnCount();

        /**
         * wifi警告条数
         * */
        void getWifiWarnCount();
    }

}
